// Detail模块的小仓库
import { reqGoodsInfo } from '@/api'
import { reqAddOrUpdateShopCart } from '@/api'
import { getUUID } from '@/utils/uuid_token'

const state = {
    goodInfo: {},
    // 游客临时身份
    uuid_token: getUUID()
}
const mutations = {
    GETGOODINFO(state, goodInfo) {
        state.goodInfo = goodInfo
    }
}
const actions = {
        // 获取产品信息的action
        async getGoodInfo({ commit }, skuId) {
            let result = await reqGoodsInfo(skuId)
            if (result.code == 200) {
                commit('GETGOODINFO', result.data)
            }
        },
        // 将产品添加到购物车
        async addOrUpdateShopCart({ commit }, { skuId, skuNum }) {
            // 加入购物车返还的结果
            // 加入购物车成功前台将参数带给服务器
            // 服务器写入数据成功 返回code码200 代表操作成功
            // 未返回多余数据 不用派发mutation 三连环
            let result = await reqAddOrUpdateShopCart(skuId, skuNum)
                // console.log(result)
                // 返回promise对象
            if (result.code == 200) {
                // 服务器加入成功
                return 'success'
            } else {
                return Promise.reject(new Error('Failed'))
            }
        }
    }
    // getters 简化数据
const getters = {
    // 路径导航简化数据
    categoryView(state) {
        // 此处state.goodInfo初始态为空对象 属性值categoryView可能为undefined
        // 设置categoryView 至少为空对象
        return state.goodInfo.categoryView || {}
    },
    // 产品信息简化数据
    skuInfo(state) {
        return state.goodInfo.skuInfo || {}
    },
    // 产品售卖属性简化
    spuSaleAttrList(state) {
        return state.goodInfo.spuSaleAttrList || []
    }
}

export default {
    state,
    mutations,
    actions,
    getters
}